//
//  LKStatusListViewModel.swift
//  LKWeibo
//
//  Created by like on 16/8/13.
//  Copyright © 2016年 like. All rights reserved.
//

import UIKit



class LKStatusListViewModel: NSObject {
    //保存微博数据的数组
    lazy var dataArray: [LKStatusViewModel] = [LKStatusViewModel]()
 
}


extension LKStatusListViewModel{
    // 请求首页数据 isPullUp 是否是上拉加载更多

        func loadData(isPullUp: Bool,finish:(isSuccess: Bool)->()){
            
            var sinceId: Int64 = 0
            var maxId:Int64 = 0
            // 上拉加载更过
            if isPullUp {
                maxId = dataArray.last?.statusModel?.id ?? 0
                if maxId > 0 {
                    // 则返回ID小于或等于max_id的微博，默认为0。
                    maxId -= 1
                }
            }else {
                // 下拉刷新
                sinceId = dataArray.first?.statusModel?.id ?? 0
            }
            
            
            LKNetworkTools.sharedTools.homeLoadData(sinceId, maxId: maxId, success: { (response) in
                
                // 判断response 是否为nil  而且是否可以转成一个数组
                guard let result = response?["statuses"] as? [[String: AnyObject]] else{
                    finish(isSuccess: false)
                    return
                }
                
                var mArray:[LKStatusViewModel] = [LKStatusViewModel]()
                
                //forin 数据，转模型
                for val in result {
                    let model = LKStatusModel(dict: val)
                    let statusViewModel = LKStatusViewModel(statusModel: model)
                    mArray.append(statusViewModel)
                }
                // 上拉
                if isPullUp {
                    self.dataArray = self.dataArray + mArray
                }else {
                    // 下拉
                    self.dataArray = mArray + self.dataArray
                }
                

                finish(isSuccess: true)
                // 刷新 UI
//                printLog("数据请求成功")
                
                //print(self.dataArray.count)
                
            }) { (error) in
                finish(isSuccess: false)
            }
            
    }

 
}